// components/MusicCoponents/MusicCoponents.js
// 导入npm 订阅者
import PubSub from 'pubsub-js'
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    recommendList: { // 列表数据
      type: Array,
      value: []
    },

  },

  /**
   * 组件的初始数据
   */
  data: {
    day: "1",// 天
    month: "1",// 月
    index: 0,// 点击音乐的下标
  },
  lifetimes: {
    attached: function () {
      // 更新日期的状态数据
      this.setData({
        day: new Date().getDate(), // 日
        month: new Date().getMonth() + 1, // 月
      })

      
       // 订阅来自songDetail页面发布的消息
       PubSub.subscribe('switchType', (msg, types) => {
        // type(区分上/下一首) indexS(区分播放顺序) onEnded(区分自然播放结束)
        let { type, indexS, onEnded } = types;
        // 推荐列表数据  当前点击播放歌曲的索引
        let { recommendList, index } = this.data;
        if (type === 'pre') { // 上一首
          // 如果当前歌曲是第一首，就跳转最后一首
          (index === 0) && (index = recommendList.length);
          if (indexS === 0) { // 顺序播放
            index -= 1;
          }
        } else {// 下一首
          // 如果当前歌曲是最后首，就跳转第一首
          (index === recommendList.length - 1) && (index = -1);

          if (indexS === 0) {  // 顺序播放
            index += 1;
            console.log('顺序播放');
          } else if (indexS === 1) { // 单曲循环
            !onEnded ? index += 1 : '';
          } else if (indexS === 2) { // 随机播放
            // Math.random() 随机生成小数 0 ~ recommendList.length - 1 ？ 对小数取整 Math.floor(X) = X的整数位 不等于当前歌曲的索引
            let Next = Math.floor(Math.random() * recommendList.length - 1) !== index ? Math.floor(Math.random() * recommendList.length - 1) : Math.floor(Math.random() * recommendList.length - 1);
            Next !== index ? Next : Math.floor(Math.random() * recommendList.length - 1);
            console.log("随机播放", Next);
            index = Next;
          }
        }
        // 更新index的状态数据
        this.setData({
          index
        })

        // 获取上/下一首的歌曲Id
        let musicId = recommendList[index].id;
        // 将歌曲的Id回传给songDetail页面
        PubSub.publish('musicId', musicId)

      })


    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
   
      // 点击跳转播放界面songDetail
  toSongDetail(event) {
    let { song, index } = event.currentTarget.dataset;
    // 更新index的状态数据
    this.setData({
      index
    })
    // 路由跳转传参: query 参数
    wx.navigateTo({
      // 路由传参对象或数组时要把要穿的参数转换成JOSN对象
      // 不能直接将song对象作为参数传递,长度过长会被自动截取掉
      // url:"/pages/songDetail/songDetail?song=" + JSON.stringify(song),
      url: "/songPackage/pages/songDetail/songDetail?musicId=" + song.id,
    })
  },
  }
})
